package com.alen.sun.service;

import com.alen.sun.bean.Order;
import com.alen.sun.bean.PageBean;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * 订单状态 详解 0:未支付, 1:已支付, 2:已取消
 */

public interface OrderService {
    //添加订单
    Boolean addOrder(Order order);

    //修改订单
    Boolean updateOrder(Order order);

    //删除订单
    Boolean deleteOrder(Order order);

    //分页查询
    PageBean page(Integer page, Integer pageSize);

    //批量删除活动
    Boolean deleteByIds(List<String> ids);

    /**
     * 非基础功能
     */

    //家属端根据自己的外键elderlyId在数据库查询出对应的订单记录信息,根据时间顺序,全部订单
    PageBean getOrderByElderlyIdAll(String elderlyId,Integer page, Integer pageSize);

    //家属端根据自己的外键elderlyId在数据库查询出对应的订单记录信息,根据时间顺序,未支付订单
    PageBean getOrderByElderlyIdUnpaid(String elderlyId,Integer page, Integer pageSize);

    //家属端根据自己的外键elderlyId在数据库查询出对应的订单记录信息,根据时间顺序,已付款订单
    PageBean getOrderByElderlyIdPaid(String elderlyId,Integer page, Integer pageSize);

    //未支付订单30分钟后自动取消订单,状态设置为2
    Boolean cancelUnpaidOrders();

    //网页搜索功能,聚合模糊查询,订单编号,套餐名
    List<Order> searchByKeywords(String keywords);

    /**
     * 数据分析可视化
     * @return
     */
    List<Map<String, Object>> getOrderTotalAmountAndTime();

    /**
     * 数据可视化分析,订单截止日期
     * @return
     */
    List<Map<String, Object>> getDaysUntil();

}
